﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StringsMethods
{
    class Program
    {
        static void Main(string[] args)
        {
            //string str = " Мама мыла раму ";
            //Console.WriteLine(str);

            //str = str.Trim();
            //Console.WriteLine(str);

            //int FirstIndx = str.IndexOf('м');
            //int LastIndx = str.LastIndexOf('м');

            //Console.WriteLine("First index м - {0}, last index м - {1}", FirstIndx, LastIndx);

            //string str1 = str.Substring(5);
            //Console.WriteLine(str1);

            //string str2 = str.Substring(2, 7);
            //Console.WriteLine(str2);

            //string[] splitter = str.Split('л');
            //foreach (var sp in splitter)
            //{
            //    Console.WriteLine(sp);
            //}

            //string chReplace = str.Replace('а', 'd');
            //Console.WriteLine(chReplace);

            //string strReplace = str.Replace("раму", "жопу");
            //Console.WriteLine(strReplace);

            //string strtest = "";
            //if (String.IsNullOrWhiteSpace(strtest))
            //{
            //    Console.WriteLine("пустая или налл");
            //}
            //else
            //{
            //    Console.WriteLine("ни то и ни другое");
            //}


            //пользователь вводит числа х-х - х - х.посчитать кол - во чисел и определить какие повторяются

            //++++++++++++++++++++++++++++++++++++++++++++++++


            //                                                  Home work
            //                                    First variant

            //Console.WriteLine("Введите числа:");
            //string Numbers = Console.ReadLine();
            //string[] numbArray = Numbers.Split('-');
            //int numbersCount = numbArray.Length;
            //int[] array = new int[numbersCount];
            //Console.WriteLine("Count of numbers: {0}.", numbersCount);

            //for (int i = 0; i < numbArray.Length; i++)
            //{
            //    array[i] = Convert.ToInt32(numbArray[i]);
            //}

            //Console.WriteLine("Sorted array:");
            //Array.Sort(array);
            //foreach (var element in array)
            //{
            //    Console.Write(element);
            //}
            //Console.WriteLine();

            //bool isExist = false;
            //int[] sumappear = new int[array.Length];
            //int[] firstIndexArray = new int[array.Length];
            //int[] LastIndexArray = new int[array.Length];
            //for (int i = 0; i < array.Length; i++)
            //{
            //    for (int j = 0; j < array.Length; j++)
            //    {
            //        if (array[i] == array[j] && i != j)
            //        {
            //            isExist = true;
            //        }
            //    }
            //    firstIndexArray[i] = Array.IndexOf(array, array[i]);
            //    LastIndexArray[i] = Array.LastIndexOf(array, array[i]);
            //    if (LastIndexArray[i] - firstIndexArray[i] == 0)
            //    {
            //        sumappear[i] = 1;
            //    }
            //    else
            //    {
            //        sumappear[i] = LastIndexArray[i] - firstIndexArray[i] + 1;
            //    }
            //}

            //if (isExist)
            //{
            //    Console.WriteLine("Duplicated values are presents in array.");
            //    for (int i = 0; i < array.Length; i++)
            //    {
            //        if (i == 0)
            //        {
            //            Console.WriteLine("Number {0} has appeared - {1} times.", array[i], sumappear[i]);
            //        }
            //        else if (firstIndexArray[i] != firstIndexArray[i - 1])
            //        {
            //            Console.WriteLine("Number {0} has appeared - {1} times.", array[i], sumappear[i]);
            //        }
            //    }
            //}

            //if (isExist == false)
            //{
            //    Console.WriteLine("There is no duplicates in array.");
            //}


            // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
            //                                    Second variant

            Console.WriteLine("Введите числа:");
            string Numbers = Console.ReadLine();
            string[] numbArray = Numbers.Split('-');
            int numbersCount = numbArray.Length;
            Console.WriteLine("Count of numbers: {0}.", numbersCount);
            bool isDuplicatesExist = false;
            Dictionary<string, int> dict = new Dictionary<string, int>();
            foreach (var elemenet in numbArray)
            {
                if (!dict.ContainsKey(elemenet))
                {
                    dict.Add(elemenet, 1);
                }
                else
                {
                    dict[elemenet]++;
                    isDuplicatesExist = true;
                }
            }
            if (isDuplicatesExist)
            {
                Console.WriteLine("Duplicated values are presents in array.");
                foreach (KeyValuePair<string, int> item in dict)
                {
                    {
                        Console.WriteLine("The value {0} appeared - {1} times", item.Key, item.Value);
                    }
                }
            }
            if (isDuplicatesExist == false)
            {
                Console.WriteLine("There is no duplicates in array.");
            }

// -----------------------------------------------------------------------------------------------


            // Пользователь вводит числа одной строкой с разделителем "-"
            // Пример 1-3-4-6
            //Определить количество введенных чисел 
            //Определить есть ли повторяющиеся элементы
            //Для каждого элемента массива вывести сколько раз этот элемент повторяется

            //Визуализация
            //Пользователь вводит строку "1-2-2-3-4-4-4"
            //Программа должна вывести
            //(вид значение - число повторений)
            //1 : 0
            //2 : 1
            //3 : 0
            //4 : 2
            //можно вывести и в виде значение -число вхождений:
            //            1 : 1
            //2 : 2
            //3 : 1
            //4 : 3

        }
    }
}
